#pragma once

#include "Configuration.h"
#include "WebPage.h"
#include "SplitToolCppjieba.h"
#include <unordered_map>

#include <iostream>
using std::unordered_map;


using std::pair;

class PageLibPreprocessor{
public:
    PageLibPreprocessor(Configuration &pconf);//读取配置文件
    void doProcess();//执行预处理
    void readInfoFromFile();//根据配置信息读取网页库和位置偏移 库的内容
    void cutRedundantPages(SplitToolCppjieba &jieba, Configuration &pconf);//对冗余的网页进行去重
    void bulidInvertIndexTable();//创建倒排索引表
    void storeOnDisk();//将经过预处理之后的网页库、位置偏 移库和倒排索引表写回到磁盘上
private:
    SplitToolCppjieba* _wordCutter; //分词对象 
    vector <WebPage> _pageLib; //网页库的容器对象 
    unordered_map<int, pair<int, int> > _offsetLib; //网页偏移库对象 
    unordered_map<string, vector<pair<int, double> > > _invertIndexTable; //倒排索引表对象
    //单词
};